
#include "apue.h"
#include <sys/wait.h>

#define PAGER "${PAGER:-more}" // environment variable, or default

int main(int argc, char *argv[])
{
    char line[MAXLINE] ={0};
    FILE *fpin, *fpout;

    if (2 != argc)
    {
        err_quit("usage: a.out <pathname>");
    }

    if ((fpin = fopen(argv[1], "r")) == NULL)
    {
        err_sys("can't open %s", argv[1]);
    }

    if ((fpout = popen(PAGER, "w")) == NULL)
    {
        err_sys("popen error");
    }

    while (NULL != fgets(line, MAXLINE, fpin))
    {
        if (fputs(line, fpout) == EOF)
        {
            err_sys("fputs error to pipe");
        }
    }

    if (ferror(fpin))
    {
        err_sys("fgets error");
    }

    if (pclose(fpout) == -1)
    {
        err_sys("pclose error");
    }

    exit(0);
}
